@echo off
echo ========================================
echo 第三步状态仍为0调试测试
echo ========================================
echo.

echo 问题描述：
echo 从图片中可以看到，业务ID 173 的记录显示：
echo - 第3步：王老四退住申请（步骤3），"是否处理完成"为"0"
echo - 第4步：王老四-账单调整（步骤4），"是否处理完成"为"0"
echo 说明第三步提交后，完成状态还是"0"，没有变成"1"（已处理）
echo.

echo 问题分析：
echo 1. 第三步提交后状态没有更新为"1"
echo 2. 说明状态更新逻辑可能没有被正确执行
echo 3. 可能的原因：
echo    - ptId 参数问题
echo    - 状态更新逻辑没有被调用
echo    - 数据库事务问题
echo    - 前端调用问题
echo.

echo 检查步骤：
echo 1. 检查前端是否正确传递 ptId 参数
echo 2. 检查后端是否正确接收 ptId 参数
echo 3. 检查状态更新逻辑是否被正确调用
echo 4. 检查数据库中的实际状态
echo 5. 检查后端日志中的处理过程
echo.

echo 前端参数传递检查：
echo const submitData = {
echo   businessId: route.query.id, // 业务ID
echo   contractNo: contractForm.value.contractNo, // 合同编号
echo   fileName: fileName, // 文件名
echo   taskId: route.query.taskId || '', // 任务ID（步骤3的taskId）
echo   ptId: route.query.ptid || '' // ✅ 待办任务ID
echo }
echo.

echo 后端参数接收检查：
echo // 处理 ptId - 避免空字符串转Long
echo Long ptId = null;
echo if (params.get("ptId") != null && !params.get("ptId").toString().trim().isEmpty()) {
echo   try {
echo     ptId = Long.parseLong(params.get("ptId").toString());
echo   } catch (NumberFormatException e) {
echo     System.out.println("ptId 格式错误: " + params.get("ptId"));
echo   }
echo }
echo.

echo 状态更新逻辑检查：
echo if (ptId != null) {
echo   try {
echo     System.out.println("=== 开始更新步骤3待办任务状态 ===");
echo     System.out.println("待办任务ID: " + ptId);
echo     
echo     PendingTasks currentTask = pendingTasksService.selectPendingTasksById(ptId);
echo     if (currentTask != null) {
echo       // 更新状态
echo       currentTask.setIsHandle(1L); // ✅ 已处理
echo       currentTask.setFinishTime(new Date());
echo       
echo       int taskUpdateResult = pendingTasksService.updatePendingTasks(currentTask);
echo       System.out.println("更新结果: " + (taskUpdateResult > 0 ? "成功" : "失败"));
echo     }
echo   } catch (Exception e) {
echo     System.err.println("❌ 更新步骤3待办任务状态失败: " + e.getMessage());
echo   }
echo } else {
echo   System.out.println("❌ 待办任务ID为空，无法更新状态");
echo }
echo.

echo 测试步骤：
echo 1. 重启后端服务
echo 2. 重启前端服务
echo 3. 访问待办任务界面
echo 4. 找到业务ID 173 的记录
echo 5. 点击第3步"解除合同"的"处理"按钮
echo 6. 填写解除合同信息并提交
echo 7. 观察后端日志输出
echo 8. 检查待办任务列表中的状态变化
echo.

echo 预期日志输出：
echo === Controller：解除合同提交开始 ===
echo 接收到的参数: {...}
echo 业务ID: 173
echo 合同编号: xxx
echo 文件名: xxx
echo 当前任务ID: xxx
echo 当前待办任务ID: xxx
echo === Service层：提交解除合同（步骤3）===
echo 业务ID: 173
echo 合同编号: xxx
echo 文件名: xxx
echo 工作流任务ID: xxx
echo 待办任务ID: xxx
echo ✅ 完成工作流任务（步骤3）: xxx
echo === 开始更新步骤3待办任务状态 ===
echo 待办任务ID: xxx
echo 找到待办任务: xxx, 步骤: 3, 当前状态: 0
echo 更新结果: 成功
echo ✅ 验证更新结果: xxx, 步骤: 3, 新状态: 1, 完成时间: xxx
echo.

echo 关键验证点：
echo 1. 检查 ptId 参数是否正确传递和接收
echo 2. 检查状态更新逻辑是否被正确调用
echo 3. 检查更新结果是否成功
echo 4. 检查验证结果是否正确
echo 5. 检查是否有异常或错误
echo.

echo 数据库验证SQL：
echo SELECT id, bussniess_id, step_no, is_handle, status, create_time, finish_time, title
echo FROM pending_tasks 
echo WHERE bussniess_id = 173 
echo ORDER BY step_no;
echo.
echo 预期结果：
echo - 第三步的 is_handle 应该是 1（已处理）
echo - 第三步应该有 finish_time
echo - 第四步应该存在且 is_handle 为 0（未处理）
echo.

echo 如果状态更新仍然失败：
echo 1. 检查 ptId 参数是否正确传递
echo 2. 检查状态更新逻辑是否被调用
echo 3. 检查 pendingTasksService.updatePendingTasks 是否成功
echo 4. 检查数据库事务是否正常
echo 5. 检查是否有异常被捕获
echo 6. 检查数据库连接和权限
echo.

pause
